VersionIndependentProgID Key

The values associated with this key associate a ProgID with a CLSID. Used to determine the latest version of an object application.

Registry Entry

HKEY_LOCAL_MACHINE\SOFTWARE\Classes
    \<VersionIndependentProgID> = <Vendor>.<Component>
        \CLSID = <CLSID>
        \CurVer  = <ProgID>

Value Entries

<Vendor>.<Component>

The name of the latest version of the object application.

<CLSID>

The CLSID of the newest installed version of the class.

<ProgID>

The <ProgID> of the newest installed version of the class.

 

Remarks

The format or the <VersionIndependentProgID> is <Vendor>.<Component>, separated by periods, no spaces, and no version number. The version-independent ProgID, like the ProgID, can be registered with a human readable name.

Applications must register a version-independent programmatic identifier under the VersionIndependentProgID key. The <VersionIndependentProgID> refers to the application s class, and does not change from version to version, instead remaining constant across all versions, for example, Microsoft Word Document. It is used with macro languages and refers to the currently installed version of the application s class. The <VersionIndependentProgID> must correspond to the name of the latest version of the object application.

The <VersionIndependentProgID> is used when, for example, a container application creates  a chart or table with a toolbar button. In this situation the application can  use the <VersionIndependentProgID> to determine the latest version of the needed object application.

The <VersionIndependentProgID> is stored and maintained solely by application code. When given the VersionIndependentProgID, the CLSIDFromProgID28Q7N_ function returns the CLSID of the current version.

You can use CLSIDFromProgID and ProgIDFromCLSIDX6Y3KP to convert between these two representations.

You can use IOleObject::GetUserTypeVLMZIO or OleRegGetUserTypeRTN8S5 to change the identifier to a displayable string.

If A custom handler is not used, the entry should be set to OLE32.DLL, as shown in the following example.

HKEY_-CLASSES_ROOT\CLSID\{ 00000402-0000-0000-C000-000000000046}

    \InprocHandler = ole32.dll

 

In addition to the preceding registry entry, you should add the following corresponding entry under the CLSIDBZ_9TR key:

\CLSID
    \
<CLSID>  = <human readable name>
        \
<VersionIndependentProgID> = human readable name

 

See Also

ProgID, CLSIDFromProgID, ProgIDFromCLSID, IOleObject::GetUserType, OleRegGetUserType